﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

/*下标引用操作符*/
/*访问整个数组的内容
只要我们产⽣数组所有元素的下标就可以了，那我们使⽤for循环产⽣0~9的下标，接下来使⽤下标访问就⾏了。*/
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//			//arr  [0]1	2 3 4 5 6 7 8 9 
//	int i = 0;
//	for(i=0;i<=9;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	
//	return 0;
//}

/*数组的输⼊:根据需求，⾃⼰给数组输⼊想要的数据*/
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

/*⼀维数组在内存中的存储*/
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10,11 };
//	int i = 0;
//	for (i = 0; i < 11; i++)
//	{
//		printf("&arr[%d]=%p\n", i, &arr[i]);//%p是占位符，表示的是对应内存地址编号
//	}
//	return 0;
//}

/*sizeof计算数组元素个数*/
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof arr[0];
//	printf("%d ", sz);
//	return 0;
//}

/*二维数组*/
//int main()
//{
//	int arr[3][3] = { 0 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 3; j++)
//		{
//			printf("&arr[%d][%d]=%p\n", i,j, &arr[i][j]);
//		}
//	}
//	return 0;
//}

#include <string.h>
//#include <windows.h>
//int main()
//{
//	char arr1[] = "梅是帅哥";
//	char arr2[] = "********";
//	int left = 0;
//	int right = strlen(arr1) - 1;
//	while (left <= right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		printf("%s\n", arr2);
//		Sleep(1000);
//		system("cls");
//		left++;
//		right--;
//	}
//	printf("%s\n", arr2);
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10};
//	int k = 0;//  0 1 2 3 4 5 6 7 8  9
//	printf("请输入要找出下标的数字k=");
//	scanf("%d", &k);
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//			if (arr[i] == k)
//			{
//				printf("找到了，你输入的数是%d,下标是%d\n", arr[i], i);
//				break;
//			}
//	}
//	if (i == sz)
//	{
//		printf("没找到\n");
//	}
//	return 0;
//}
//
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//升序的数组
	//在数组中查找k - 7
	int k = 0;
	printf("请输入你要找下标的数字k=");
	scanf("%d", &k);
	int sz = sizeof(arr) / sizeof(arr[0]);

	int left = 0;
	int right = sz - 1;
	int flag = 0;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] == k)
		{
			printf("找到了，下标是:%d\n", mid);
			flag = 1;
			break;
		}
		else if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else
		{
			right = mid - 1;
		}
	}
	if (flag == 0)
		printf("找不到了\n");

	return 0;
}